package ArchitectureStyles;

import Utils.*;

import java.util.List;
import java.util.stream.Collectors;

public class ObjectOriented {
    public static String process(List<String> lines) {
        LineProcessor processor = new LineProcessor();
        return lines.stream()
                .map(processor::processLine)
                .collect(Collectors.joining("\n"));
    }

    private static class LineProcessor {
        public String processLine(String line) {
            String[] words = line.split("\\s+", 3);
            if (words.length < 3) {
                return line;
            }
            return swap(words) + (words.length > 3 ? " " + String.join(" ", java.util.Arrays.copyOfRange(words, 3, words.length)) : "");
        }

        private String swap(String[] words) {
            return words[2] + " " + words[1] + " " + words[0];
        }
    }
    public static String principle(){
        return """
                面向对象模式基本原理：
                面向对象架构风格通过将复杂的系统分解为简单的对象，帮助开发者更好地理解和管理代码。
                每个对象都承担特定的职责，并通过消息传递与其他对象进行交互，从而实现功能的模块化。
                对象：
                面向对象架构风格的核心是对象，对象是现实世界中实体的抽象表示，包含数据（属性）和行为（方法）。
                封装：
                对象将数据和方法封装在一起，提供公开的接口供外部访问，隐藏内部实现细节，从而保护数据安全并提供清晰的交互边界。
                继承：
                继承允许新创建的类（子类）从已有类（父类）中继承属性和方法，增强代码复用性，并形成类的层次结构。
                多态：
                多态允许使用相同的接口（方法签名）来表示或处理不同类的对象，具体行为取决于对象的实际类型，增强了系统的灵活性和适应性。""";
    }
}
